Skip to content

Refactor: #8093 - Unexpected unknown property "user-focus" - #8094

Merged
AlexeyGirin merged 3 commits into
masterfrom
copilot/refactor-invalid-css-properties
Oct 13, 2025
Merged

AlexeyGirin merged 3 commits into
masterfrom
copilot/refactor-invalid-css-properties

Conversation

Copilot AI commented Oct 8, 2025 •

Copy link
Copy Markdown
Contributor
  • Explore repository structure and understand the issue
  • Locate the problematic file: packages/ketcher-macromolecules/src/components/Ruler/RulerArea.module.less
  • Identify the invalid CSS property user-focus: none on line 36
  • Understand the context - the property is in .rulerInputDragging class which is used during drag operations
  • Remove the invalid user-focus: none property from line 36
  • Verify the fix with stylelint
  • Build and test the changes
  • Apply prettier formatting fixes

Summary

Fixed the issue by removing the invalid CSS property user-focus: none from line 36 in packages/ketcher-macromolecules/src/components/Ruler/RulerArea.module.less.

Changes made:

  1. Removed the non-standard user-focus: none CSS property which is not part of W3C specifications
  2. Applied prettier formatting to the file (selector split and newline at EOF)

Why this is correct:

  • The user-focus property does not exist in CSS specifications and causes validation warnings
  • The intended functionality (preventing focus during drag) is already achieved through the disabled={isDragging} attribute on the input element in RulerInput.tsx
  • The user-select: none property (which is valid) remains to prevent text selection during drag

Testing:

  • ✅ Stylelint passes
  • ✅ Prettier formatting passes
  • ✅ Package builds successfully
  • ✅ No functional changes expected - the behavior is already handled by the disabled attribute
Original prompt

This section details on the original issue you should resolve

<issue_title>Refactor: Unexpected unknown property "user-focus"</issue_title>
<issue_description>Problem:
Unexpected unknown property "user-focus"

Why is this an issue?
The W3C specifications define the valid CSS properties. Only the official and browser-specific properties should be used to get the expected impact in the final rendering.

Noncompliant code example

a {
  colour: blue; /* Noncompliant; colour is not part of the specifications */
}

Compliant solution

a {
  color: blue;
}

Problem locations:
packages/ketcher-macromolecules/src/components/Ruler/RulerArea.module.less:36</issue_description>

Comments on the Issue (you are @copilot in this section)

Fixes #8093

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 2 commits October 8, 2025 20:14
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
@AlexeyGirin

Copy link
Copy Markdown
Collaborator

Check ruler behaviour

@AlexeyGirin
AlexeyGirin merged commit c6af0da into master Oct 13, 2025
15 checks passed
@AlexeyGirin
AlexeyGirin deleted the copilot/refactor-invalid-css-properties branch October 13, 2025 19:36
AlexeyGirin added a commit that referenced this pull request Nov 5, 2025
* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
AlexeyGirin added a commit that referenced this pull request Nov 5, 2025
* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
AlexeyGirin added a commit that referenced this pull request Nov 7, 2025
…ollapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f73)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Initial plan

* f2

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* Initial plan

* Initial plan

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: ViktoriaTkacheva <139227567+ViktoriaTkacheva@users.noreply.github.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
AlexeyGirin added a commit that referenced this pull request Nov 7, 2025
…ollapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f73)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Initial plan

* f2

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* Initial plan

* Initial plan

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: ViktoriaTkacheva <139227567+ViktoriaTkacheva@users.noreply.github.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
AlexeyGirin added a commit that referenced this pull request Nov 7, 2025
…ollapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f73)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Initial plan

* f2

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* Initial plan

* Initial plan

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: ViktoriaTkacheva <139227567+ViktoriaTkacheva@users.noreply.github.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
AlexeyGirin added a commit that referenced this pull request Nov 7, 2025
…ollapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f73)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Initial plan

* f2

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* Initial plan

* Initial plan

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: ViktoriaTkacheva <139227567+ViktoriaTkacheva@users.noreply.github.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
AlexeyGirin added a commit that referenced this pull request Nov 7, 2025
… Amino Acids" name (#8263)

* Initial plan

* Fix: Change "Amino acids" to "Amino Acids" in MonomerGroups enum

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support und…
AlexeyGirin added a commit that referenced this pull request Nov 7, 2025
…ses should come first (#8264)

* Initial plan

* Fix order of ambiguous bases sections to match requirements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/…
AlexeyGirin added a commit that referenced this pull request Nov 7, 2025
…ucture" dialog (#8286)

* Initial plan

* Fix font size and label alignment in Open structure dialog dropdowns

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGi…
AlexeyGirin added a commit that referenced this pull request Nov 19, 2025
* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Initial plan

* f2

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* Initial plan

* Initial plan

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: ViktoriaTkacheva <139227567+ViktoriaTkacheva@users.noreply.github.com>
Co-authored-by…
AlexeyGirin added a commit that referenced this pull request Nov 19, 2025
… as % symbol instead of @ symbol (#8580)

* Initial plan

* Fix: Add Phosphate class to ambiguous monomer @ symbol check

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Initial plan

* f2

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* Initial plan

* Initial plan

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
Co-authored-by: Ivan Maslov <165396466+ivanmasl…
AlexeyGirin added a commit that referenced this pull request Nov 20, 2025
…ite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGir…
AlexeyGirin added a commit that referenced this pull request Nov 20, 2025
…monomers (#8604)

* Initial plan

* Disable Change direction and Attach S-Group for bonds between monomers

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8509 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to …
AlexeyGirin added a commit that referenced this pull request Nov 20, 2025
* Initial plan

* Create file structure and update first batch of test files

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Update remaining test files and remove fileFormats.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove extraneous quotes from mol file

* Clean up quotation marks in mol file

Removed unnecessary quotation marks from the file.

* Remove unnecessary characters from MOL file

* Update one-unknown-superatom-contracted.mol

* Update one-unknown-superatom-expanded.mol

* Remove unnecessary quotes from mol file

* Update functional-groups-expanded-contracted.mol

* Clean up quotation marks in mol file

Removed unnecessary quotation marks from the file.

* Remove extra quotes from one-functional-group-expanded.mol

* Remove extraneous quotes from mol file

* Clean up quotation marks in mol file

Removed unnecessary quotation marks at the beginning and end of the file.

* Update unknown-superatom-expanded-contracted.mol

* #8509 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: impl…
AlexeyGirin added a commit that referenced this pull request Nov 20, 2025
…ite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGir…
AlexeyGirin added a commit that referenced this pull request Nov 20, 2025
…monomers (#8604)

* Initial plan

* Disable Change direction and Attach S-Group for bonds between monomers

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8509 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to …
AlexeyGirin added a commit that referenced this pull request Nov 20, 2025
* Initial plan

* Create file structure and update first batch of test files

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Update remaining test files and remove fileFormats.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove extraneous quotes from mol file

* Clean up quotation marks in mol file

Removed unnecessary quotation marks from the file.

* Remove unnecessary characters from MOL file

* Update one-unknown-superatom-contracted.mol

* Update one-unknown-superatom-expanded.mol

* Remove unnecessary quotes from mol file

* Update functional-groups-expanded-contracted.mol

* Clean up quotation marks in mol file

Removed unnecessary quotation marks from the file.

* Remove extra quotes from one-functional-group-expanded.mol

* Remove extraneous quotes from mol file

* Clean up quotation marks in mol file

Removed unnecessary quotation marks at the beginning and end of the file.

* Update unknown-superatom-expanded-contracted.mol

* #8509 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: impl…
AlexeyGirin added a commit that referenced this pull request Nov 21, 2025
* Initial plan

* Fix deprecated event global usage in templatePreview.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* Initial plan

* Fix deprecated event global usage in templatePreview.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f2

* Fixed build (#8607)

* - fixed build

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* Disable "Change direction" and "Attach S-Group..." for bonds between monomers (#8604)

* Initial plan

* Disable Change direction and Attach S-Group for bonds between monomers

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8509 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im m…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor: Unexpected unknown property "user-focus"

3 participants